import 'package:flutter/material.dart';
import 'package:uikit/utils/screen_util/size_extension.dart';

abstract class RikiBaseTheme {
  /// 主题色
  ThemeData get theme; //主题
  Color get primary; //主题色
  MaterialColor get primarySwatch; //主题阶色
  List<Color> get primaryGradientColors; // 主题渐变色

  /// 辅助色渐变值
  List<Color> get gradientColors => const <Color>[];

  /// 金额颜色
  Color get price;

  /// 功能色
  Color get success; //成功色
  Color get warning; //警告色
  Color get danger; //失败色
  Color get successLight; //成功色-浅
  Color get warningLight; //警告色-浅
  Color get dangerLight; //失败色-浅
  Color get successDark; //成功色-深
  Color get warningDark; //警告色-深
  Color get dangerDark; //失败色-深
  Color get successBackground; //成功色-背景
  Color get warningBackground; //警告色-背景
  Color get dangerBackground; //失败色-背景

  /// 色彩透明度
  /// 黑色
  Color get black => Colors.black;
  Color get black90 => black.withOpacity(0.9); //黑色 90透明度
  Color get black80 => black.withOpacity(0.8); //黑色 80透明度
  Color get black70 => black.withOpacity(0.7); //黑色 70透明度
  Color get black60 => black.withOpacity(0.6); //黑色 60透明度
  Color get black50 => black.withOpacity(0.5); //黑色 50透明度
  Color get black40 => black.withOpacity(0.4); //黑色 40透明度
  Color get black30 => black.withOpacity(0.3); //黑色 30透明度
  Color get black20 => black.withOpacity(0.2); //黑色 20透明度
  Color get black10 => black.withOpacity(0.1); //黑色 10透明度
  Color get black5 => black.withOpacity(0.05); //黑色 5透明度

  /// 白色
  Color get white => Colors.white; //白色
  Color get white90 => white.withOpacity(0.9); //白色 90透明度
  Color get white80 => white.withOpacity(0.8); //白色 80透明度
  Color get white70 => white.withOpacity(0.7); //白色 70透明度
  Color get white60 => white.withOpacity(0.6); //白色 60透明度
  Color get white50 => white.withOpacity(0.5); //白色 50透明度
  Color get white40 => white.withOpacity(0.4); //白色 40透明度
  Color get white30 => white.withOpacity(0.3); //白色 30透明度
  Color get white20 => white.withOpacity(0.2); //白色 20透明度
  Color get white10 => white.withOpacity(0.1); //白色 10透明度
  Color get white5 => white.withOpacity(0.05); //白色 5透明度

  /// 灰阶色
  Color get shade50; // 部分操作区域背景色/输入框等
  Color get shade100; // 页面背景色
  Color get shade200; // 用于白色背景上分割线的颜色
  Color get shade300; // 白色背景上，白色标签外描边的颜色
  Color get shade400; // 白色按钮描边/
  Color get shade500; // 辅助文案/提示文案/组件内icon等
  Color get shade600; //
  Color get shade700; // 次要文案/二级文案/导航
  Color get shade800; // 标题/正文颜色/重要信息展示
  Color get shade900; // Titlebar/标题文字/需强调的信息

  /// 移动端字体
  TextStyle get largeTextStyle => TextStyle(fontSize: 22.sp); // 特殊场景/需要突出文字
  TextStyle get bigTextStyle => TextStyle(fontSize: 18.sp); // 特殊标题
  TextStyle get navTextStyle => TextStyle(fontSize: 16.sp); // 导航栏标题文字/详情页标题/
  TextStyle get listTextStyle => TextStyle(fontSize: 15.sp); // 列表标题
  TextStyle get normalTextStyle => TextStyle(fontSize: 14.sp); // 用于大多数文字/正文摘要/内容/子标题/
  TextStyle get tabTextStyle => TextStyle(fontSize: 13.5.sp); // tab
  TextStyle get normal2TextStyle => TextStyle(fontSize: 13.sp); // 正文/主要信息
  TextStyle get subtitleTextStyle => TextStyle(fontSize: 12.sp); // 辅助信息/弱提示/引导文字
  TextStyle get smallTextStyle => TextStyle(fontSize: 11.sp); // 按钮辅助文字/极少部分备注信息
  TextStyle get minTextStyle => TextStyle(fontSize: 10.sp); // 最小文字/底部菜单栏文字/标签文字
}
